//入口函数
$(function () {
    //定义常用元素
    const layer = layui.layer

    //渲染列表
    getCateList()


    //1.生成分类列表
    function getCateList() {
        $.ajax({
            url: '/my/article/cates',
            method: 'GET',
            success: function (res) {
                let strData = template('tpl-cateList', res);
                $('tbody').html(strData);
            }
        })
    }

    //2.为新增添加类别添加事件
    $('#btnAddCata').on('click', function () {
        layer.open({
            type: 1,
            title: '添加文章分类',
            area: ['500px', '250px'],
            content: $('#tpl-addCate').html(),
        });
    })

    //3.为未来的按钮添加提交事件
    $('body').on('submit', '#form-addCate', function (e) {
        //阻止默认行为
        e.preventDefault()
        //获取表单数据
        const formData = $('#form-addCate').serialize()
        $.ajax({
            url: '/my/article/addcates',
            method: 'POST',
            data: formData,
            success(res) {
                //如果新增失败，则弹出错误信息
                if (res.status !== 0) return layui.layer.msg(res.message);
                //如果新增成功，则刷新页面
                location.reload();
            }
        })
    })

    //4.为编辑按钮添加事件
    $('tbody').on('click', '#redact', function () {
        //编辑弹出层
        layui.editLayerId = layer.open({
            type: 1,
            title: '修改文章分类',
            area: ['500px', '250px'],
            content: $('#tpl-editCate').html(),
        });
        //获取按钮所在单元格的id值
        const strId = $(this).parent().data('id')
        //获取分类信息
        $.ajax({
            url: '/my/article/cates/' + strId,
            method: 'GET',
            success(res) {
                //如果请求是失败，发送错误信息
                if (res.status !== 0) return layer.msg(res.message);
                //如果请求成功，则将数据一次性填装到列表里
                layui.form.val('layEditForm', res.data)
            }
        })
    })

    //5.为未来的编辑表单添加 提交事件
    $('body').on('submit', '#form-editCate', function (e) {
        //阻止默认行为
        e.preventDefault();
        //获取表单数据
        const strData = $(this).serialize();
        //提交表单数据
        $.ajax({
            url: '/my/article/updatecate',
            data: strData,
            method: 'POST',
            success(res) {
                //如果请求失败，则弹出错误信息
                if (res.status !== 0) return layui.layer.msg(res.message);
                //如果请求成功，重新加载列表
                getCateList();
                //关闭当前窗口
                layer.close(layui.editLayerId);
            }
        })
    })

    //6.为未来的删除按钮添加事件
    $('tbody').on('click', '#remove', function () {
        //弹出确认删除框
        layer.confirm('请问确定要删除吗？', { icon: 3, title: '提示' }, (index) => {
            //获取被点击单元格上的id
            const strId = $(this).parent().data('id');
            //请求删除数据
            $.ajax({
                url: '/my/article/deletecate/' + strId,
                method: 'GET',
                success: (res) => {
                    //如果请求失败，则弹出错误信息
                    if (res.status !== 0) return layui.layer.msg(res.message);
                    //如果请求成功，重新请求列表
                    getCateList();
                }
            })
            //关闭当前窗口
            layer.close(index);
        })
    })
})